#include "readFile.h"


extern gchar *gatewayIp;

size_t configRespCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    size_t realsize = size * nmemb;
    // 这里可以处理获取到的数据，比如存储到文件或者其他操作
    char * result = (char *)contents;
    //解析为json格式的字符串
    cJSON *root = cJSON_Parse(result);
    //做非空判断
    if(root!=NULL){
        cJSON *successRoot = cJSON_GetObjectItemCaseSensitive(root,"success");
        if (cJSON_IsTrue(successRoot))
        {
             printf("配置成功\n");
        }else{
            cJSON *codeRoot = cJSON_GetObjectItemCaseSensitive(root,"code");
            cJSON *messageRoot = cJSON_GetObjectItemCaseSensitive(root,"message");   
         printf("配置失败： code=%d ,message=%s \n",codeRoot->valueint,messageRoot->valuestring);
        }
    }

    return realsize;
}
/*
    ip：是动态的 （通过读取配置文件 能够获取）
    sn: 是动态   ()
    地址：动态    (通过读取配置文件 能够获取)
*/

void sendConfigRequest(gchar *sn){
    //当前位置组装，通过参数传递过来
    //从新去获取ip地址 location
     //正常的去文件里面读取
    //把数据存储到文件中：glib
    GKeyFile *keyFile= g_key_file_new();
    //加载文件读取配置文件存储位置
    if(!g_key_file_load_from_file(keyFile,"./config.ini",G_KEY_FILE_NONE,NULL)){
        g_warning("readfile load config.ini error!");       
    }
    //读取里面的路径
    gchar *path = g_key_file_get_string(keyFile,"config","devPath",NULL);

    GKeyFile *devFile= g_key_file_new();
    if(!g_key_file_load_from_file(devFile,path,G_KEY_FILE_NONE,NULL)){
        g_warning("g_key_file_new load config.ini error!");
        return ;

    }
    gatewayIp= g_key_file_get_string(devFile,"config","gatewayIp",NULL);  
    gchar *location= g_key_file_get_string(devFile,"config","location",NULL);  

    g_key_file_free(keyFile);
    g_key_file_free(devFile);

    char* urlFormatStr="http://%s/config.json?sn=%s&location=%s";
    char *url = calloc(1,100);
    //替换动态参数
    sprintf(url,urlFormatStr,gatewayIp,sn,location);
    printf("%s\n",url);
    //核心调用一个发送请求的函数
    sendGetRequest(url,configRespCallback);
}
